package com.miyu.common.utils.page;

import com.miyu.common.pojo.PageServe;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Request;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * 通用解析入口
 * 根据操作前缀判断解析业务 、
 * 跳转相关解析类
 * @author MIYU
 */
public class PageServeJx implements PageProcessor {
    /**
     * 页面服务jx
     * @param pj pj
     */
    public static void pageServiceJx(PageServe pj) {
        Request request = new Request();
        request.setUrl(pj.getUrl());
        request.putExtra("params", pj);
        Spider.create(new PageServeJx()).addRequest(request)
                // 最后数据人缓存
                // .addPipeline(new SaveCacheData())
                .thread(10)
                .run();

    }

    @Override
    public void process(Page page) {
        /** 获取参数获取 */
        PageServe pageServe = page.getRequest().getExtra("params");
        /** 判断当前操作*/
        switch (pageServe.getOperate().name().split("_")[0].toUpperCase()) {
            case "V":
                /* 视频 */
                VideoPageJx.pageJx(page);
                break;
            case "B":
                /* 书籍*/
                break;
            case "I":
                /* 图片 */
                break;
            case "M":
                /* 音乐 */
                break;
            default:
                return;
        }
    }

    @Override
    public Site getSite() {
        return this.site;
    }

    /** 爬虫配置信息设置 有条件动态配置 */
    private Site site = new Site()
            /*设置编码*/
            .setCharset("utf-8")
            /** 浏览器代理 使用浏览器访问  */
            .setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (HTML, like Gecko) Chrome/113.0.0.0 Safari/537.36")
            /** 设置抓取间隔 */
            .setSleepTime(1)
            /** 设置超时时间 */
            .setTimeOut(10000)
            /** 设置重试时间 */
            .setRetrySleepTime(300)
            /** 设置重试次数 */
            .setRetryTimes(3);
}
